/**
  CNOK project, Anyang Normal University, IMP-CAS
  \brief Calculate inclusive Rs=sigma_exp/sigma_th for -N reactions.
  \author SUN Yazhou, asia.rabbit@163.com
  \since 2022/05/23
  \date Last modified: 2022/05/25 by SUN Yazhou
  \copyright 2020-2023 SUN Yazhou
  \copyright CNOK project, Anyang Normal University, IMP-CAS
*/

#include <vector>
#include "TANucleus.h"

using std::vector;

static const int FNNPAR = 1; // 0: Horiuchi; 1: LenziRay
static const bool PAULI = false; // 0: off; 1: on
// static const double EK = 2100.; // incident energy: MeV/nucleon

int main(int argc, char const *argv[]){
  vector<TANucleus *> ov;
  TANucleus *t;

  // O13 //
  // (A, sp, sn, cs, dcs)
  ov.push_back(t = new TANucleus(13., 1.5116, 16.8705, 21.56, 3.34));
  t->SetBaseDir("config/O/O13");
  t->SetOrbit({"0p1/2_1+", "0p3/2_1+"});
  t->SetEx({0., 0.});
  t->SetC2S({0.5291, 0.0923});

  // O14 //
  ov.push_back(t = new TANucleus(14., 4.6267, 23.1790, 38.65, 3.01));
  t->SetBaseDir("config/O/O14");
  t->SetOrbit({"0p1/2_1/2-"});
  t->SetEx({0.});
  t->SetC2S({1.6102});

  // O15 //
  ov.push_back(t = new TANucleus(15., 7.2968, 13.2235, 65.38, 6.06));
  t->SetBaseDir("config/O/O15");
  t->SetOrbit({"0p1/2_1+_1", "0p1/2_1+_2", "0p1/2_1+_3", "0p1/2_0+",
  	"0p3/2_1+_1", "0p3/2_1+_2", "0p3/2_1+_3", "0p3/2_2+", "0d5/2_2-", "0d5/2_3-",
  	"1s1/2_0-", "1s1/2_1-", "0d3/2_2-", "0d3/2_1-"});
  t->SetEx({0., 3.9481, 6.2035, 2.3128, 0., 3.9481, 6.2035, 7.0291,
  	5.1059, 5.8343, 4.9151, 5.6914, 5.1059, 5.6914});
  t->SetC2S({0.7972, 0.5401, 0.005, 0.4052, 0.2998, 0.3678, 0.016,
  	1.15, 0.0358, 0.0257, 0.0001, 0.0074, 0., 0.0004});

  // O16 //
  ov.push_back(t = new TANucleus(16., 12.1274, 15.6639, 60.11, 3.38));
  t->SetBaseDir("config/O/O16");
  t->SetOrbit({"0p1/2_1/2-", "0p3/2_3/2-_1", "0p3/2_3/2-_2",
  	"0d5/2_5/2+_1", "0d5/2_5/2+_2", "0d3/2_3/2+_1", "0d3/2_3/2+_2",
  	 "1s1/2_1/2+_1", "1s1/2_1/2+_2", "1s1/2_1/2+_3"});
  t->SetEx({0., 6.3238, 9.925, 5.2702, 7.1551, 7.3008,
  	8.5714, 5.2988, 8.3126, 9.0497});
  t->SetC2S({1.8049, 3.7203, 0.0251, 0.0961, 0.0141, 0.0036,
  	0.0235, 0.0081, 0.0095, 0.0001});

  // O17 //
  ov.push_back(t = new TANucleus(17., 13.7816, 4.1431, 21.4, 3.8));
  t->SetBaseDir("config/O/O17");
  t->SetOrbit({"0p1/2_2-", "0p1/2_3-", "0p3/2_2-", "0p3/2_1-", "0p3/2_3-"});
  t->SetEx({0., 0.2982, 0., 0.3973, 0.2982});
  t->SetC2S({0.7225, 1.0365, 0.0246, 0.007, 0.0173});

  // O18 //
  ov.push_back(t = new TANucleus(18., 15.9419, 8.0454, 29.6, 2.2));
  t->SetBaseDir("config/O/O18");
  t->SetOrbit({"0p1/2_1/2-_1", "0p1/2_1/2-_2", "0p3/2_3/2-_1", "0p3/2_3/2-_2",
  	"0p3/2_3/2-_3", "0d5/2_5/2+_1", "0d5/2_5/2+_2", "1s1/2_1/2+", "0d3/2_3/2+"});
  t->SetEx({0., 3.663, 0.3739, 3.2042, 5.515, 2.526, 4.209, 0.8496, 5.195});
  t->SetC2S({1.6950, 0.0339, 0.2934, 0.3697, 2.5455, 0.0498, 0.0450, 0.0056, 0.0034});

  // O19 //
  ov.push_back(t = new TANucleus(19., 17.0693, 3.9556, 14.3, 2.3));
  t->SetBaseDir("config/O/O19");
  t->SetOrbit({"0p1/2_2-_1", "0p1/2_2-_2", "0p1/2_3-", "0p3/2_1-",
  	"0p3/2_2-_1", "0p3/2_2-_2", "0p3/2_3-", "0d5/2_1+", "0d3/2_1+"});
  t->SetEx({0.1147, 0.5874, 0.742, 0., 0.1147, 0.5874, 0.742, 2.6144, 2.6144});
  t->SetC2S({0.6849 ,0.0004, 0.9809, 0.0206, 0., 0.0387, 0.002, 0.0001, 0.0011});

  // O20 //
  ov.push_back(t = new TANucleus(20., 19.3491, 7.6080, 21.68, 1.12));
  t->SetBaseDir("config/O/O20");
  t->SetOrbit({"0p1/2_1/2-", "0p3/2_3/2-_1", "0p3/2_3/2-_2", "1s1/2_1/2+"});
  t->SetEx({0., 1.143, 2.132, 2.511});
  t->SetC2S({1.6661, 0.4974, 0.2763, 0.0073});

  // O22 //
  ov.push_back(t = new TANucleus(22., 23.2379, 6.8503, 16.12, 1.1));
  t->SetBaseDir("config/O/O22");
  t->SetOrbit({"0p1/2_1/2-", "0p3/2_3/2-", "0d5/2_5/2+"});
  t->SetEx({0., 1.160, 2.380});
  t->SetC2S({1.6315, 0.8734, 0.0213});


  for(auto &t : ov){
    // t->SetPauli(PAULI);
    // t->SetEk(EK);
    // t->SetFNNParOpt(FNNPAR);

    if(t->GetA() == 16.) t->Rs();
  } // end for

  return 0;
} // end the main function
